/**
 * 使用用户名和密码执行登录操作
 *
 * @returns 登录操作的结果
 */
async function performLoginForUserNamePassWord() {
  // 调用ApisForUserLogonActionForUsernamePassword函数并传入用户名和密码
  const { data } = await ApisForUserLogonActionForUsernamePassword({
    username: useMyUserLoginStoreStore().usr,
    password: useMyUserLoginStoreStore().pwd,
  })
  return data.value;
}

/**
 * 使用手机号和验证码进行登录
 *
 * @returns 登录成功后返回的数据
 */
async function performLoginForPhoneAndPhoneCode() {
  // 调用ApisForUserLogonActionForPhoneNumber函数并传入手机号和验证码
  const { data } = await ApisForUserLogonActionForPhoneNumber({
    phone: useMyUserLoginStoreStore().phone,
    code: useMyUserLoginStoreStore().code,
  });
  return data.value;
}

/**
 * 确保用户已同意协议
 */
async function ensureUserAgreement() {
  // 使用MyUserLoginStoreStore中的userLoginActionForIsAgreement方法
  useMyUserLoginStoreStore().userLoginActionForIsAgreement();
}

/**
 * 处理登录结果
 * @param data 登录结果数据
 */
function handleLoginResult(data: unknown): void {
  if (data) {
    // TODO : 登录成功后跳转到首页
    // TODO: Navigate to home page after successful login
  }
}

/**
 * 处理错误提示信息
 * @param error 错误对象
 */
function showErrorToast(error: Error): void {
  // 捕获异常并显示错误信息
  showFailToast(error.message);
}

/**
 * 用户使用用户名和密码登录的动作
 */
export async function userLogonActionForUsernamePassword() {
  try {
    await ensureUserAgreement();
    const data = await performLoginForUserNamePassWord();
    handleLoginResult(data);
  } catch (error) {
    showErrorToast(error as Error);
  }
}

/**
 * 通过手机验证码登录
 *
 * @returns 登录操作的结果
 * @throws 登录过程中发生错误时抛出异常
 */
export async function userLogonActionForPhoneCode() {
  try {
    useMyUserLoginStoreStore().userLoginActionForIsAgreement();
    const data = await performLoginForPhoneAndPhoneCode();
    handleLoginResult(data);
  } catch (error) {
    showErrorToast(error as Error);
  }
}

/**
 * 默认匿名用户登录提供程序
 *
 * 这是一个异步函数，用于实现默认匿名用户登录逻辑。
 *
 * @returns 返回一个Promise，表示异步操作的结果。
 */
export async function defaultUserLoginProviderAnonymous(action: string) {
  console.log(action);
}